package com.example.common.network;
import com.example.common.model.GameApiGameResp;
import com.example.common.model.GameApiGetGameResp;
import com.example.common.model.GameApiRankResp;
import com.example.common.model.GameApiSearchResp;
import com.example.common.model.GameResp;
import com.example.common.model.MyResponse;


import java.util.List;

import retrofit2.Call;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface GameReq {
    /**
     * 弃用
     * @return
     */
    @GET("game")
    Call<MyResponse<List<GameApiGameResp>>> getGame();

    @GET("game/{id}")
    Call<MyResponse<GameApiGetGameResp>> getGameById(@Path("id") Integer id);

    /**
     * 获取游戏排行榜
     * @param pn 页码, 默认为1
     * @param limit 每页显示的个数, 取值范围为15到30, 默认为30
     * @return
     */
    @GET("game/rank")
    Call<MyResponse<GameApiRankResp>> getGameRank(@Query("pn") Integer pn,@Query("limit") Integer limit);

    /**
     * 获取游戏推荐
     * @return
     */
    @GET("game/recommend")
    Call<MyResponse<List<GameResp>>> getGameRecommend();

    /**
     * 用户收藏一个游戏
     * @param id 游戏id
     * @param token token
     * @return
     */
    @POST("game/{id}/favor")
    Call<MyResponse<Boolean>> postGameIdFavor(@Path("id") Integer id, @Header("authorization") String token);

    /**
     * 用户取消收藏一个游戏
     * @param id 游戏id
     * @param token token
     * @return
     */
    @DELETE("game/{id}/favor")
    Call<MyResponse<Boolean>> deleteGameIdFavor(@Path("id") Integer id,@Header("authorization") String token);

    /**
     * 搜索游戏
     * @param key 搜索关键字, 会从游戏名、分类名、简介中进行搜索
     * @param pn 页码, 默认为1
     * @param limit 每页显示的个数, 取值范围为5到10, 默认为10
     * @return
     */
    @GET("game/search")
    Call<MyResponse<GameApiSearchResp>> getGameSearch(@Query("key") String key,@Query("pn") Integer pn,@Query("limit") Integer limit);
}
